package com.lft.gulimall.coupon;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 1. 如何使用Spring Cloud Alibaba Nacos 配置中心统一管理配置
 * 1） 引入依赖
 * <!--配置中心来做配置管理-->
 * <dependency>
 * <groupId>com.alibaba.cloud</groupId>
 * <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 * </dependency>
 * 2） 创建 bootstrap.properties 配置文件。其中配置好。服务应用名，注册中心服务地址。前提是启动Nacos Server服务器
 * spring.application.name=gulimall-coupon
 * # 配置中心的服务地址
 * spring.cloud.nacos.config.server-addr=192.168.56.180:8848
 * 3） 在配置中心，添加一个Data Id(数据集) 名为 模块名.properties 的配置项（gulimall-coupon.properties）。
 * 4） 在 模块名.properties 中添加任何配置
 * 5） 动态获取配置。
 * ① 在请求的 Controller 类上加上 @RefreshScope 注解，可以动态获取刷新配置。
 * ② 在需要配置的参数项上加上 @Value ("${xxx.xxx.xxx}") 注解，可以获取配置。
 * 【注】如果配置中心有的，优先使用配置中心的配置数据。配置中心没有的会在 resources 目录下搜索 application.properties 配置文件中的配置数据。
 * <p>
 * 2. Nacos 注册中心细节
 * 1） 命名空间：配置隔离；
 * 默认：public（保留空间）；默认新增的所有配置都在 public 空间下。
 * ① 开发、测试、生产：利用命名空间来做环境隔离。
 * 【注意】在 bootstrap.properties 配置文件中，配置需要使用哪个命名空间下的配置。
 * # 配置中心使用的命名空间（使用命名空间 ID）
 * spring.cloud.nacos.config.namespace=102b0c06-233f-4513-9688-2d02f65c0c27
 * ② 每一个微服务之间互相隔离配置，每一个微服务都创建自己的命名空间，只加载自己命名空间下的所有配置。
 * 2） 配置集
 * 一组相关或者不相关的配置项的集合称为配置集。在系统中，一个配置文件通常就是一个配置集，包含了系统各个方面的配置。
 * 例如：一个配置集可能 包含了数据源、线程池、日志级别等配置项。
 * 3） 配置集ID
 * 类似文件名（Data ID）
 * 4） 配置分组
 * 默认所有的配置集都属于：DEFAULT_GROUP；
 * 我们可以自定义分组：618，818，1111，1212
 * 项目中的使用：每个微服务创建自己的命名空间，使用配置分组区分环境：dev，test,prop
 * <p>
 * 3. 同时加载多个配置集
 * 1） 微服务任何配置信息，任何配置文件都可以放在配置中心中
 * 2） 只需要在 bootstrap.properties 中说明加载配置中心中哪些配置文件。
 * 3） @Value，@ConfigurationProperties ...以前SpringBoot任何方法从配置文件中获取值，都能使用。配置中心有的优先使用配置中心中的。
 */
@MapperScan ("com.lft.gulimall.coupon.dao")
@SpringBootApplication
@EnableDiscoveryClient
public class GulimallCouponApplication {
	
	public static void main(String[] args) {
		SpringApplication.run(GulimallCouponApplication.class, args);
	}
	
}